package domain.entities;

import web.protocols.action.SitesSelectionController;

import javax.persistence.*;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;

/**
 * ProtocoloCentro entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "protocolo_centro", catalog = "bms")
public class ProtocoloCentro implements java.io.Serializable {

	// Fields

	private ProtocoloCentroId id;
	private Centro centro;
	private ProtocoloCompromisopais protocoloCompromisopais;
	private Integer activationToFpfv;
	private Integer activePatients;
	private Integer additionalApproval;
	private String ccis;
	private String comments;
	private Integer ctagSendExec;
	private Integer enrolledPatients;
	private Date fechaEnvioCartaInicio;
	private Date fechaProtocolApproval;
	private Date fechaProtocolSubmission;
	private Date finalCrflock;
	private Date finalQueryLock;
	private Date finalSdvlock;
	private String inspectionAudit;
	private Integer ipSentToIrb;
	private String justificacion;
	private Date lastPatientLastVisit;
	private Integer protocoloCentrocentroid;
	private String protocoloCentroprotocoloid;
	private Integer randomizedPatients;
	private Integer recruitmentCommited;
	private Integer recruitmentRandomized;
    private boolean seleccionado;
    private boolean institutionRequiresIEC;
    private Involucrado ECMember;
	private Date siteActivation;
	private Date siteClosure;
	private Integer siteNumber;
	private String specialRecruitmentActions;
	private Date studyClosed;
	private Integer targetPatients;
    private String timeForDeliveringSupplies;
    private String placeToDeliverEnvelopes;
    private String addressToReceiveDrugs;
    private Score siteScore;
	private Set<ComiteEtica> comiteEticas = new HashSet<ComiteEtica>(0);
	private Set<Datasafetyreports> datasafetyreportses = new HashSet<Datasafetyreports>(
			0);
	private Set<Closuredocuments> closuredocumentses = new HashSet<Closuredocuments>(
			0);
    private Set<Saes> saeses = new HashSet<Saes>(0);
	private Set<Reaprobaciones> reaprobacioneses = new HashSet<Reaprobaciones>(
			0);
	private Set<Advancedfinalstudyreports> advancedfinalstudyreportses = new HashSet<Advancedfinalstudyreports>(
			0);
	private Set<InvestigadorProtocoloCentro> investigadorProtocoloCentros = new HashSet<InvestigadorProtocoloCentro>(
			0);
	private Set<Printedmaterialforpatient> printedmaterialforpatients = new HashSet<Printedmaterialforpatient>(
			0);
	private Set<EvaluacionCentro> evaluacionCentros = new HashSet<EvaluacionCentro>(
			0);
	private Set<Vendorcentral> vendorcentrals = new HashSet<Vendorcentral>(0);
	private Set<Informedconsents> informedconsentses = new HashSet<Informedconsents>(
			0);
	private Set<Secdiscrepancyreport> secdiscrepancyreports = new HashSet<Secdiscrepancyreport>(
			0);
	private Set<Studystaff> studystaffs = new HashSet<Studystaff>(0);
	private Set<Studystartup> studystartups = new HashSet<Studystartup>(0);
	private Set<Suplementalcrfcsp> suplementalcrfcsps = new HashSet<Suplementalcrfcsp>(
			0);
	private Set<Documentosporcentro> documentosporcentros = new HashSet<Documentosporcentro>(
			0);
	private Set<Comentario> comentarios = new HashSet<Comentario>(0);
	private Set<Studydeviations> studydeviationses = new HashSet<Studydeviations>(
			0);
	private Set<Visitas> visitases = new HashSet<Visitas>(0);
	private Set<DocumentoCentro> documentoCentros = new HashSet<DocumentoCentro>(
			0);
	private Set<Paciente> pacientes = new HashSet<Paciente>(0);
	private Set<Ctag> ctags = new HashSet<Ctag>(0);
	private Set<LaboratoryCertification> laboratoryCertifications = new HashSet<LaboratoryCertification>(
			0);
	private Set<LaboratorioLocal> laboratorioLocals = new HashSet<LaboratorioLocal>(
			0);
	private Set<Protocolinformation> protocolinformations = new HashSet<Protocolinformation>(
			0);
	private Set<Rcostudyprogresstracking> rcostudyprogresstrackings = new HashSet<Rcostudyprogresstracking>(
			0);
    private boolean fefym;

	// Constructors

	/** default constructor */
	public ProtocoloCentro() {
	}

	/** minimal constructor */
	public ProtocoloCentro(ProtocoloCentroId id, Centro centro,
			ProtocoloCompromisopais protocoloCompromisopais,
			String especialidad, Integer protocoloCentrocentroid,
			String protocoloCentroprotocoloid, boolean seleccionado) {
		this.id = id;
		this.centro = centro;
		this.protocoloCompromisopais = protocoloCompromisopais;
		this.protocoloCentrocentroid = protocoloCentrocentroid;
		this.protocoloCentroprotocoloid = protocoloCentroprotocoloid;
		this.seleccionado = seleccionado;
	}

	/** full constructor */
	public ProtocoloCentro(ProtocoloCentroId id, Centro centro,
			ProtocoloCompromisopais protocoloCompromisopais,
			Integer activationToFpfv, Integer activePatients,
			Integer additionalApproval, String ccis,
			String comments, Integer ctagSendExec, Integer enrolledPatients,
			String especialidad, Date fechaEnvioCartaInicio,
			Date fechaProtocolApproval, Date fechaProtocolSubmission,
			Date finalCrflock, Date finalQueryLock, Date finalSdvlock,
			String inspectionAudit, Integer ipSentToIrb, String justificacion,
			Date lastPatientLastVisit, Integer protocoloCentrocentroid,
			String protocoloCentroprotocoloid, Integer randomizedPatients,
			Integer recruitmentCommited, Integer recruitmentRandomized,
			boolean seleccionado, Date siteActivation, Date siteClosure,
			Integer siteNumber, String specialRecruitmentActions,
			Date studyClosed, Integer targetPatients,
			Set<ComiteEtica> comiteEticas,
			Set<Datasafetyreports> datasafetyreportses,
			Set<Closuredocuments> closuredocumentses,
			Set<Saes> saeses, Set<Reaprobaciones> reaprobacioneses,
			Set<Advancedfinalstudyreports> advancedfinalstudyreportses,
			Set<InvestigadorProtocoloCentro> investigadorProtocoloCentros,
			Set<Printedmaterialforpatient> printedmaterialforpatients,
			Set<EvaluacionCentro> evaluacionCentros,
			Set<Vendorcentral> vendorcentrals,
			Set<Informedconsents> informedconsentses,
			Set<Secdiscrepancyreport> secdiscrepancyreports,
			Set<Studystaff> studystaffs, Set<Studystartup> studystartups,
			Set<Suplementalcrfcsp> suplementalcrfcsps,
			Set<Documentosporcentro> documentosporcentros,
			Set<Comentario> comentarios,
			Set<Studydeviations> studydeviationses, Set<Visitas> visitases,
			Set<DocumentoCentro> documentoCentros, Set<Paciente> pacientes,
			Set<Ctag> ctags,
			Set<LaboratoryCertification> laboratoryCertifications,
			Set<LaboratorioLocal> laboratorioLocals,
			Set<Protocolinformation> protocolinformations,
			Set<Rcostudyprogresstracking> rcostudyprogresstrackings) {
		this.id = id;
		this.centro = centro;
		this.protocoloCompromisopais = protocoloCompromisopais;
		this.activationToFpfv = activationToFpfv;
		this.activePatients = activePatients;
		this.additionalApproval = additionalApproval;
		this.ccis = ccis;
		this.comments = comments;
		this.ctagSendExec = ctagSendExec;
		this.enrolledPatients = enrolledPatients;
		this.fechaEnvioCartaInicio = fechaEnvioCartaInicio;
		this.fechaProtocolApproval = fechaProtocolApproval;
		this.fechaProtocolSubmission = fechaProtocolSubmission;
		this.finalCrflock = finalCrflock;
		this.finalQueryLock = finalQueryLock;
		this.finalSdvlock = finalSdvlock;
		this.inspectionAudit = inspectionAudit;
		this.ipSentToIrb = ipSentToIrb;
		this.justificacion = justificacion;
		this.lastPatientLastVisit = lastPatientLastVisit;
		this.protocoloCentrocentroid = protocoloCentrocentroid;
		this.protocoloCentroprotocoloid = protocoloCentroprotocoloid;
		this.randomizedPatients = randomizedPatients;
		this.recruitmentCommited = recruitmentCommited;
		this.recruitmentRandomized = recruitmentRandomized;
		this.seleccionado = seleccionado;
		this.siteActivation = siteActivation;
		this.siteClosure = siteClosure;
		this.siteNumber = siteNumber;
		this.specialRecruitmentActions = specialRecruitmentActions;
		this.studyClosed = studyClosed;
		this.targetPatients = targetPatients;
		this.comiteEticas = comiteEticas;
		this.datasafetyreportses = datasafetyreportses;
		this.closuredocumentses = closuredocumentses;
		this.saeses = saeses;
		this.reaprobacioneses = reaprobacioneses;
		this.advancedfinalstudyreportses = advancedfinalstudyreportses;
		this.investigadorProtocoloCentros = investigadorProtocoloCentros;
		this.printedmaterialforpatients = printedmaterialforpatients;
		this.evaluacionCentros = evaluacionCentros;
		this.vendorcentrals = vendorcentrals;
		this.informedconsentses = informedconsentses;
		this.secdiscrepancyreports = secdiscrepancyreports;
		this.studystaffs = studystaffs;
		this.studystartups = studystartups;
		this.suplementalcrfcsps = suplementalcrfcsps;
		this.documentosporcentros = documentosporcentros;
		this.comentarios = comentarios;
		this.studydeviationses = studydeviationses;
		this.visitases = visitases;
		this.documentoCentros = documentoCentros;
		this.pacientes = pacientes;
		this.ctags = ctags;
		this.laboratoryCertifications = laboratoryCertifications;
		this.laboratorioLocals = laboratorioLocals;
		this.protocolinformations = protocolinformations;
		this.rcostudyprogresstrackings = rcostudyprogresstrackings;
	}

	// Property accessors
	@EmbeddedId
	@AttributeOverrides( {
			@AttributeOverride(name = "centroid", column = @Column(name = "CENTROid", nullable = false)),
			@AttributeOverride(name = "protocoloCompromisopaisprotocoloid", column = @Column(name = "protocolo_compromisopaisprotocoloid", nullable = false)),
			@AttributeOverride(name = "protocoloCompromisopaiscompromisopaisid", column = @Column(name = "protocolo_compromisopaiscompromisopaisid", nullable = false)) })
	public ProtocoloCentroId getId() {
		return this.id;
	}

	public void setId(ProtocoloCentroId id) {
		this.id = id;
	}

	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name = "CENTROid", nullable = false, insertable = false, updatable = false)
	public Centro getCentro() {
		return this.centro;
	}

	public void setCentro(Centro centro) {
		this.centro = centro;
	}

	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumns( {
			@JoinColumn(name = "protocolo_compromisopaisprotocoloid", referencedColumnName = "protocoloid", nullable = false, insertable = false, updatable = false),
			@JoinColumn(name = "protocolo_compromisopaiscompromisopaisid", referencedColumnName = "compromisopaisid", nullable = false, insertable = false, updatable = false) })
	public ProtocoloCompromisopais getProtocoloCompromisopais() {
		return this.protocoloCompromisopais;
	}

	public void setProtocoloCompromisopais(
            ProtocoloCompromisopais protocoloCompromisopais) {
		this.protocoloCompromisopais = protocoloCompromisopais;
	}

	@Column(name = "activationToFPFV")
	public Integer getActivationToFpfv() {
		return this.activationToFpfv;
	}

	public void setActivationToFpfv(Integer activationToFpfv) {
		this.activationToFpfv = activationToFpfv;
	}

	@Column(name = "activePatients")
	public Integer getActivePatients() {
		return this.activePatients;
	}

	public void setActivePatients(Integer activePatients) {
		this.activePatients = activePatients;
	}

	@Column(name = "additionalApproval")
	public Integer getAdditionalApproval() {
		return this.additionalApproval;
	}

	public void setAdditionalApproval(Integer additionalApproval) {
		this.additionalApproval = additionalApproval;
	}

	@Column(name = "ccis")
	public String getCcis() {
		return this.ccis;
	}

	public void setCcis(String ccis) {
		this.ccis = ccis;
	}

	@Column(name = "comments")
	public String getComments() {
		return this.comments;
	}

	public void setComments(String comments) {
		this.comments = comments;
	}

	@Column(name = "CTAgSendExec")
	public Integer getCtagSendExec() {
		return this.ctagSendExec;
	}

	public void setCtagSendExec(Integer ctagSendExec) {
		this.ctagSendExec = ctagSendExec;
	}

	@Column(name = "enrolledPatients")
	public Integer getEnrolledPatients() {
		return this.enrolledPatients;
	}

	public void setEnrolledPatients(Integer enrolledPatients) {
		this.enrolledPatients = enrolledPatients;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "fechaEnvioCartaInicio", length = 10)
	public Date getFechaEnvioCartaInicio() {
		return this.fechaEnvioCartaInicio;
	}

	public void setFechaEnvioCartaInicio(Date fechaEnvioCartaInicio) {
		this.fechaEnvioCartaInicio = fechaEnvioCartaInicio;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "fechaProtocolApproval", length = 10)
	public Date getFechaProtocolApproval() {
		return this.fechaProtocolApproval;
	}

	public void setFechaProtocolApproval(Date fechaProtocolApproval) {
		this.fechaProtocolApproval = fechaProtocolApproval;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "fechaProtocolSubmission", length = 10)
	public Date getFechaProtocolSubmission() {
		return this.fechaProtocolSubmission;
	}

	public void setFechaProtocolSubmission(Date fechaProtocolSubmission) {
		this.fechaProtocolSubmission = fechaProtocolSubmission;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "finalCRFLock", length = 10)
	public Date getFinalCrflock() {
		return this.finalCrflock;
	}

	public void setFinalCrflock(Date finalCrflock) {
		this.finalCrflock = finalCrflock;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "finalQueryLock", length = 10)
	public Date getFinalQueryLock() {
		return this.finalQueryLock;
	}

	public void setFinalQueryLock(Date finalQueryLock) {
		this.finalQueryLock = finalQueryLock;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "finalSDVLock", length = 10)
	public Date getFinalSdvlock() {
		return this.finalSdvlock;
	}

	public void setFinalSdvlock(Date finalSdvlock) {
		this.finalSdvlock = finalSdvlock;
	}

	@Column(name = "inspectionAudit")
	public String getInspectionAudit() {
		return this.inspectionAudit;
	}

	public void setInspectionAudit(String inspectionAudit) {
		this.inspectionAudit = inspectionAudit;
	}

	@Column(name = "ipSentToIRB")
	public Integer getIpSentToIrb() {
		return this.ipSentToIrb;
	}

	public void setIpSentToIrb(Integer ipSentToIrb) {
		this.ipSentToIrb = ipSentToIrb;
	}

	@Column(name = "justificacion")
	public String getJustificacion() {
		return this.justificacion;
	}

	public void setJustificacion(String justificacion) {
		this.justificacion = justificacion;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "lastPatientLastVisit", length = 10)
	public Date getLastPatientLastVisit() {
		return this.lastPatientLastVisit;
	}

	public void setLastPatientLastVisit(Date lastPatientLastVisit) {
		this.lastPatientLastVisit = lastPatientLastVisit;
	}

	@Column(name = "PROTOCOLO_CENTROCENTROid", nullable = false)
	public Integer getProtocoloCentrocentroid() {
		return this.protocoloCentrocentroid;
	}

	public void setProtocoloCentrocentroid(Integer protocoloCentrocentroid) {
		this.protocoloCentrocentroid = protocoloCentrocentroid;
	}

	@Column(name = "PROTOCOLO_CENTROPROTOCOLOid", nullable = false)
	public String getProtocoloCentroprotocoloid() {
		return this.protocoloCentroprotocoloid;
	}

	public void setProtocoloCentroprotocoloid(String protocoloCentroprotocoloid) {
		this.protocoloCentroprotocoloid = protocoloCentroprotocoloid;
	}

	@Column(name = "randomizedPatients")
	public Integer getRandomizedPatients() {
		return this.randomizedPatients;
	}

	public void setRandomizedPatients(Integer randomizedPatients) {
		this.randomizedPatients = randomizedPatients;
	}

	@Column(name = "recruitmentCommited")
	public Integer getRecruitmentCommited() {
		return this.recruitmentCommited;
	}

	public void setRecruitmentCommited(Integer recruitmentCommited) {
		this.recruitmentCommited = recruitmentCommited;
	}

	@Column(name = "recruitmentRandomized")
	public Integer getRecruitmentRandomized() {
		return this.recruitmentRandomized;
	}

	public void setRecruitmentRandomized(Integer recruitmentRandomized) {
		this.recruitmentRandomized = recruitmentRandomized;
	}

	@Column(name = "seleccionado", nullable = true)
	public boolean getSeleccionado() {
		return this.seleccionado;
	}

	public void setSeleccionado(boolean seleccionado) {
		this.seleccionado = seleccionado;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "siteActivation", length = 10)
	public Date getSiteActivation() {
		return this.siteActivation;
	}

	public void setSiteActivation(Date siteActivation) {
		this.siteActivation = siteActivation;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "siteClosure", length = 10)
	public Date getSiteClosure() {
		return this.siteClosure;
	}

	public void setSiteClosure(Date siteClosure) {
		this.siteClosure = siteClosure;
	}

	@Column(name = "siteNumber", unique = true)
	public Integer getSiteNumber() {
		return this.siteNumber;
	}

	public void setSiteNumber(Integer siteNumber) {
		this.siteNumber = siteNumber;
	}

	@Column(name = "specialRecruitmentActions")
	public String getSpecialRecruitmentActions() {
		return this.specialRecruitmentActions;
	}

	public void setSpecialRecruitmentActions(String specialRecruitmentActions) {
		this.specialRecruitmentActions = specialRecruitmentActions;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "studyClosed", length = 10)
	public Date getStudyClosed() {
		return this.studyClosed;
	}

	public void setStudyClosed(Date studyClosed) {
		this.studyClosed = studyClosed;
	}

	@Column(name = "targetPatients")
	public Integer getTargetPatients() {
		return this.targetPatients;
	}

	public void setTargetPatients(Integer targetPatients) {
		this.targetPatients = targetPatients;
	}

	@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
	@JoinTable(name = "protocolo_centro_comite_etica", catalog = "bms", joinColumns = {
			@JoinColumn(name = "PROTOCOLO_CENTROCENTROid", nullable = false, updatable = false),
			@JoinColumn(name = "protocolo_centroprotocolo_compromisopaisprotocoloid", nullable = false, updatable = false),
			@JoinColumn(name = "protocolo_centroprotocolo_compromisopaiscompromisopaisid", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "COMITE_ETICAid", nullable = false, updatable = false) })
	public Set<ComiteEtica> getComiteEticas() {
		return this.comiteEticas;
	}

	public void setComiteEticas(Set<ComiteEtica> comiteEticas) {
		this.comiteEticas = comiteEticas;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "protocoloCentro")
	public Set<Datasafetyreports> getDatasafetyreportses() {
		return this.datasafetyreportses;
	}

	public void setDatasafetyreportses(
			Set<Datasafetyreports> datasafetyreportses) {
		this.datasafetyreportses = datasafetyreportses;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "protocoloCentro")
	public Set<Closuredocuments> getClosuredocumentses() {
		return this.closuredocumentses;
	}

	public void setClosuredocumentses(Set<Closuredocuments> closuredocumentses) {
		this.closuredocumentses = closuredocumentses;
	}

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "protocoloCentro")
	public Set<Saes> getSaeses() {
		return this.saeses;
	}

	public void setSaeses(Set<Saes> saeses) {
		this.saeses = saeses;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "protocoloCentro")
	public Set<Reaprobaciones> getReaprobacioneses() {
		return this.reaprobacioneses;
	}

	public void setReaprobacioneses(Set<Reaprobaciones> reaprobacioneses) {
		this.reaprobacioneses = reaprobacioneses;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "protocoloCentro")
	public Set<Advancedfinalstudyreports> getAdvancedfinalstudyreportses() {
		return this.advancedfinalstudyreportses;
	}

	public void setAdvancedfinalstudyreportses(
			Set<Advancedfinalstudyreports> advancedfinalstudyreportses) {
		this.advancedfinalstudyreportses = advancedfinalstudyreportses;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "protocoloCentro")
	public Set<InvestigadorProtocoloCentro> getInvestigadorProtocoloCentros() {
		return this.investigadorProtocoloCentros;
	}

	public void setInvestigadorProtocoloCentros(
			Set<InvestigadorProtocoloCentro> investigadorProtocoloCentros) {
		this.investigadorProtocoloCentros = investigadorProtocoloCentros;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "protocoloCentro")
	public Set<Printedmaterialforpatient> getPrintedmaterialforpatients() {
		return this.printedmaterialforpatients;
	}

	public void setPrintedmaterialforpatients(
			Set<Printedmaterialforpatient> printedmaterialforpatients) {
		this.printedmaterialforpatients = printedmaterialforpatients;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "protocoloCentro")
	public Set<EvaluacionCentro> getEvaluacionCentros() {
		return this.evaluacionCentros;
	}

	public void setEvaluacionCentros(Set<EvaluacionCentro> evaluacionCentros) {
		this.evaluacionCentros = evaluacionCentros;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "protocoloCentro")
	public Set<Informedconsents> getInformedconsentses() {
		return this.informedconsentses;
	}

	public void setInformedconsentses(Set<Informedconsents> informedconsentses) {
		this.informedconsentses = informedconsentses;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "protocoloCentro")
	public Set<Secdiscrepancyreport> getSecdiscrepancyreports() {
		return this.secdiscrepancyreports;
	}

	public void setSecdiscrepancyreports(
			Set<Secdiscrepancyreport> secdiscrepancyreports) {
		this.secdiscrepancyreports = secdiscrepancyreports;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "protocoloCentro")
	public Set<Studystaff> getStudystaffs() {
		return this.studystaffs;
	}

	public void setStudystaffs(Set<Studystaff> studystaffs) {
		this.studystaffs = studystaffs;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "protocoloCentro")
	public Set<Studystartup> getStudystartups() {
		return this.studystartups;
	}

	public void setStudystartups(Set<Studystartup> studystartups) {
		this.studystartups = studystartups;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "protocoloCentro")
	public Set<Suplementalcrfcsp> getSuplementalcrfcsps() {
		return this.suplementalcrfcsps;
	}

	public void setSuplementalcrfcsps(Set<Suplementalcrfcsp> suplementalcrfcsps) {
		this.suplementalcrfcsps = suplementalcrfcsps;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "protocoloCentro")
	public Set<Documentosporcentro> getDocumentosporcentros() {
		return this.documentosporcentros;
	}

	public void setDocumentosporcentros(
			Set<Documentosporcentro> documentosporcentros) {
		this.documentosporcentros = documentosporcentros;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "protocoloCentro")
	public Set<Comentario> getComentarios() {
		return this.comentarios;
	}

	public void setComentarios(Set<Comentario> comentarios) {
		this.comentarios = comentarios;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "protocoloCentro")
	public Set<Studydeviations> getStudydeviationses() {
		return this.studydeviationses;
	}

	public void setStudydeviationses(Set<Studydeviations> studydeviationses) {
		this.studydeviationses = studydeviationses;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "protocoloCentro")
	public Set<Visitas> getVisitases() {
		return this.visitases;
	}

	public void setVisitases(Set<Visitas> visitases) {
		this.visitases = visitases;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "protocoloCentro")
	public Set<DocumentoCentro> getDocumentoCentros() {
		return this.documentoCentros;
	}

	public void setDocumentoCentros(Set<DocumentoCentro> documentoCentros) {
		this.documentoCentros = documentoCentros;
	}

	@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
	@JoinTable(name = "protocolo_centro_paciente", catalog = "bms", joinColumns = {
			@JoinColumn(name = "PROTOCOLO_CENTROPROTOCOLOid", nullable = false, updatable = false),
			@JoinColumn(name = "protocolo_centroprotocolo_compromisopaisprotocoloid", nullable = false, updatable = false),
			@JoinColumn(name = "protocolo_centroprotocolo_compromisopaiscompromisopaisid", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "PACIENTEid", nullable = false, updatable = false) })
	public Set<Paciente> getPacientes() {
		return this.pacientes;
	}

	public void setPacientes(Set<Paciente> pacientes) {
		this.pacientes = pacientes;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "protocoloCentro")
	public Set<Ctag> getCtags() {
		return this.ctags;
	}

	public void setCtags(Set<Ctag> ctags) {
		this.ctags = ctags;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "protocoloCentro")
	public Set<LaboratoryCertification> getLaboratoryCertifications() {
		return this.laboratoryCertifications;
	}

	public void setLaboratoryCertifications(
			Set<LaboratoryCertification> laboratoryCertifications) {
		this.laboratoryCertifications = laboratoryCertifications;
	}

	@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
	@JoinTable(name = "laboratorio_local_protocolo_centro", catalog = "bms", joinColumns = {
			@JoinColumn(name = "PROTOCOLO_CENTROCENTROid", nullable = false, updatable = false),
			@JoinColumn(name = "protocolo_centroprotocolo_compromisopaisprotocoloid", nullable = false, updatable = false),
			@JoinColumn(name = "protocolo_centroprotocolo_compromisopaiscompromisopaisid", nullable = false, updatable = false) },
            inverseJoinColumns = { @JoinColumn(name = "LABORATORIO_LOCALid", nullable = false, updatable = false) })
	public Set<LaboratorioLocal> getLaboratorioLocals() {
		return this.laboratorioLocals;
	}

	public void setLaboratorioLocals(Set<LaboratorioLocal> laboratorioLocals) {
		this.laboratorioLocals = laboratorioLocals;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "protocoloCentro")
	public Set<Protocolinformation> getProtocolinformations() {
		return this.protocolinformations;
	}

	public void setProtocolinformations(
			Set<Protocolinformation> protocolinformations) {
		this.protocolinformations = protocolinformations;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "protocoloCentro")
	public Set<Rcostudyprogresstracking> getRcostudyprogresstrackings() {
		return this.rcostudyprogresstrackings;
	}

	public void setRcostudyprogresstrackings(
			Set<Rcostudyprogresstracking> rcostudyprogresstrackings) {
		this.rcostudyprogresstrackings = rcostudyprogresstrackings;
	}

    public boolean isInstitutionRequiresIEC() {
        return institutionRequiresIEC;
    }

    public void setInstitutionRequiresIEC(boolean institutionRequiresIEC) {
        this.institutionRequiresIEC = institutionRequiresIEC;
    }

    public String getTimeForDeliveringSupplies() {
        return timeForDeliveringSupplies;
    }

    public void setTimeForDeliveringSupplies(String timeForDeliveringSupplies) {
        this.timeForDeliveringSupplies = timeForDeliveringSupplies;
    }

    public String getPlaceToDeliverEnvelopes() {
        return placeToDeliverEnvelopes;
    }

    public void setPlaceToDeliverEnvelopes(String placeToDeliverEnvelopes) {
        this.placeToDeliverEnvelopes = placeToDeliverEnvelopes;
    }

    public String getAddressToReceiveDrugs() {
        return addressToReceiveDrugs;
    }

    public void setAddressToReceiveDrugs(String addressToReceiveDrugs) {
        this.addressToReceiveDrugs = addressToReceiveDrugs;
    }

    @ManyToOne
    @JoinColumn(name = "ECMember", nullable = true, insertable = true, updatable = true)
    public Involucrado getECMember() {
        return ECMember;
    }

    public void setECMember(Involucrado ECMember) {
        this.ECMember = ECMember;
    }

    @Enumerated(EnumType.ORDINAL)
    public Score getSiteScore() {
        return siteScore;
    }

    public void setSiteScore(Score siteScore) {
        this.siteScore = siteScore;
    }

    public boolean isFefym() {
        return fefym;
    }

    public void setFefym(boolean fefym) {
        this.fefym = fefym;
    }

    @Transient
    public String getSelectedLAF(){
        return seleccionado?
                    SitesSelectionController.Decision.YES.getName()
                :
                    SitesSelectionController.Decision.NO.getName();
    }

    @Transient
    public String getSiteScoreLAF(){
        return siteScore.getName();
    }

    @Transient
    public boolean isNew()
    {
        return
                this.id == null
                ||
                this.id.getCentroid() == null
                ||
                this.id.getProtocoloCompromisopaiscompromisopaisid() == null
                ||
                this.id.getProtocoloCompromisopaisprotocoloid() == null
                ||
                this.id.getProtocoloCompromisopaisprotocoloid().isEmpty();

    }

}
